package com.fiap.to;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.PrePersist;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name = "AM_PESSOA")
public class PessoaTO implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GenericGenerator(name = "seq_pessoa", strategy = "increment")
	@GeneratedValue(generator = "seq_pessoa")
	@Column(name = "ID_PESSOA")
	private int id_pessoa;
	@Column(length = 100, nullable = false)
	private String nome;
	@OneToMany(mappedBy="pessoa")
	private List<EnderecoTO> enderecos;
	@OneToMany(mappedBy="pessoa")
	private List<TelefoneTO> telefones;
	@OneToMany(mappedBy="pessoa")
	private List<EmailTO> emails;

	@PrePersist
	private void executaAntesDePersistir() {
		System.out.println("Persistindo...");
	}

	public PessoaTO() {
		super();
		// TODO Auto-generated constructor stub
	}

	public PessoaTO(int id_pessoa, String nome,
			ArrayList<EnderecoTO> enderecos, ArrayList<TelefoneTO> telefones,
			ArrayList<EmailTO> emails) {
		super();
		this.id_pessoa = id_pessoa;
		this.nome = nome;
		this.enderecos = enderecos;
		this.telefones = telefones;
		this.emails = emails;
	}

	public int getId_pessoa() {
		return id_pessoa;
	}

	public void setId_pessoa(int id_pessoa) {
		this.id_pessoa = id_pessoa;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public List<EnderecoTO> getEnderecos() {
		return enderecos;
	}

	public void setEnderecos(List<EnderecoTO> enderecos) {
		this.enderecos = enderecos;
	}

	public List<TelefoneTO> getTelefones() {
		return telefones;
	}

	public void setTelefones(List<TelefoneTO> telefones) {
		this.telefones = telefones;
	}

	public List<EmailTO> getEmails() {
		return emails;
	}

	public void setEmails(List<EmailTO> emails) {
		this.emails = emails;
	}

}
